package com.zzuli.yxypre.controller;

import com.zzuli.yxypre.comment.R;
import com.zzuli.yxypre.entity.Sheet;
import com.zzuli.yxypre.entity.User;
import com.zzuli.yxypre.service.AlbumService;
import com.zzuli.yxypre.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

/**
 * @auther pony
 * @create 2023-05-01 16:10
 */
@RestController
@RequestMapping("user")
@CrossOrigin(origins = "*")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 获取登录短信验证码
     * @param request
     * @return
     */
    @GetMapping("login/VerifyCode")
    public R getLoginVerifyCode(HttpServletRequest request){
        return userService.getLoginVerifyCode(request);
    }

    /**
     * 获取注册短信验证码
     * @param request
     * @return
     */
    @GetMapping("register/VerifyCode")
    public R getRegisterVerifyCode(HttpServletRequest request){
        return userService.getRegisterVerifyCode(request);
    }


    /**
     * 用户登录-短信验证码登录
     * @param code 验证码
     * @param phone 手机号
     * @return
     */
    @PostMapping("login/phone/{verifyCode}/{phone}")
    public R loginByPhone(@PathVariable("verifyCode") String code, @PathVariable("phone") String phone, HttpServletRequest request){
        if("".equals(phone)||phone==null){
            return R.error().message("登录失败，用户账号为空！");
        }
        if("".equals(code)||code==null){
            return R.error().message("登录失败，验证码为空！");
        }
        return userService.loginByPhone(code, phone, request);
    }

    /**
     * 用户登录-账号密码登录
     * @param phone
     * @param password
     * @param request
     * @return
     */
    @PostMapping("login/pwd/{phone}/{password}")
    public R loginByPwd(@PathVariable("phone") String phone, @PathVariable("password") String password, HttpServletRequest request){
        if("".equals(phone)||phone==null){
            return R.error().message("登录失败，用户账号为空！");
        }
        if("".equals(password)||password==null){
            return R.error().message("登录失败，验证码为空！");
        }
        return userService.loginByPwd(phone, password, request);
    }

    /**
     * 通过 token， 获取登录用户信息
     * @param request
     * @return
     */
    @GetMapping("getUserInfo")
    public R getUserInfo(HttpServletRequest request){
        return userService.getUserInfo(request);
    }

    /**
     * 用户注册-短信验证码注册
     * @param code 验证码
     * @param phone 手机号
     * @return
     */
    @PostMapping("register/phone/{verifyCode}/{phone}")
    public R registerByPhone(@PathVariable("verifyCode") String code, @PathVariable("phone") String phone, HttpServletRequest request){
        if("".equals(phone)||phone==null){
            return R.error().message("注册失败，用户账号为空！");
        }
        if("".equals(code)||code==null){
            return R.error().message("注册失败，验证码为空！");
        }
        return userService.registerByPhone(code, phone, request);
    }

    /**
     * 修改用户是否喜欢
     * @param type 关联表的类型 1：歌曲 2：专辑 3：歌单
     * @param flag 要修改成的字段 1：喜欢 2：不喜欢
     * @param relevance 关联字段格局type的不同关联的也不同 1：歌曲id 2：专辑id 3：歌单id
     * @param request
     * @return
     */
    @GetMapping("changeLove/{type}/{flag}/{relevance}")
    public R changeLove(@PathVariable("type") Integer type, @PathVariable("flag") Integer flag,
                        @PathVariable("relevance") Integer relevance, HttpServletRequest request){
        return userService.changeLove(type, flag, relevance,  request);
    }

    /**
     * 获取登录用户喜欢的歌
     * @param request
     * @return
     */
    @GetMapping("getLove/{type}")
    public R getLove(@PathVariable("type") Integer type, HttpServletRequest request){
        return userService.getLove(type, request);
    }

    /**
     * 获取登录用户创建的歌单
     * @param request
     * @return
     */
    @GetMapping("getSheet")
    public R getSheet(HttpServletRequest request){
        return userService.getSheet(request);
    }

    /**
     * 获取登录用户可能喜欢的歌单
     * @param request
     * @return
     */
    @GetMapping("maybeLove")
    public R MaybeLove(HttpServletRequest request){
        return userService.maybeLove(request);
    }

    /**
     * 获取一条歌曲信息
     * @param request
     * @return
     */
    @GetMapping("getOneSong/{key}")
    public R getOneSong(@PathVariable("key") String key, HttpServletRequest request){
        if (key==null||"".equals(key)){
            return R.error().message("请输入查询关键字");
        }
        return userService.getOneSong(key, request);
    }
//    /**
//     * 忘记密码
//     * @param code
//     * @param phone
//     * @param request
//     * @return
//     */
//    @PutMapping("forget/{phone}/{verifyCode}/{password}")
//    public R forget(@PathVariable("phone") String phone, @PathVariable("verifyCode") String code,
//                    @PathVariable("verifyCode") String password, HttpServletRequest request){
//        System.out.println(code);
//        System.out.println(phone);
//        System.out.println(password);
//        if("".equals(phone)||phone==null){
//            return R.error().message("修改密码失败，用户账号为空！");
//        }
//        if("".equals(code)||code==null){
//            return R.error().message("修改密码失败，验证码为空！");
//        }
//        return userService.registerByPhone(code, phone, request);
//    }

}
